#pragma once

#include "assert.h"
#include <iostream>
#include <string>

#include "problem_factory.h"
#include "cnf_sat_solver.h"

namespace solver
{
	class unit_tests 
	{

	public:

		static void test_problem_factory()
		{
			sat::sat_solver_strategy strategy;
			sat::cnf_sat_solver solver;
			solver::problem_factory factory;
			factory.clear();

			int class_item1[] = { 1, -2, 3 };
			int class_item2[] = { 2, 4, 5 };
			int class_item3[] = { 6, -1, 7 };

			factory.add_clause(0, 3, class_item1, &strategy);
			factory.add_clause(1, 3, class_item2, &strategy);
			factory.add_clause(2, 3, class_item3, &strategy);

			solver::problem_solver root_instance;

			factory.create_problem(root_instance, 0, "test_problem");

			std::cout << "problem_factory works" << std::endl;
		}

	};
}
